<?php
namespace Weibo\Controller;
use Weibo\Controller\WeibobaseController;

define("SAMPLE", "this is a test");		//类之外定义常量,如无特殊需求都用define

/**
 * 示例控制器
 * @author rockskyawp	2016-12-22
 */
class SampleController extends WeibobaseController{
	
	const SAMPLE = 'this is a test';	//类内使用const定义不允许被更改的数据
	
	public $var1;						//非混合写法,空格就能对齐
	public $var2;
	
	protected $var3;
	protected $var4;
	
	private $var5;
	private $var6;
	
	public		$var7;					//混合写法,用tab对齐
	protected	$var8;
	private		$var9;
	
	/**
	 * 构造函数
	 * @author	Baiyu	2016-12-22
	 * @param	string	$param1		参数一的说明
	 * @param	number	$param2		参数二的说明
	 */
	public function __construct($param1 = '', $param2 = 0){		//构造方法放到最前面,其它魔术方法也要放到其它方法的前面
		parent::__construct();		//父类的构造方法放到最前面
		
		//do something...
	}
	
	/**
	 * 魔术方法GET,重写父类方法,最好写上see
	 * @author	Baiyu	2016-12-22
	 * @param	string	$name		name的说明
	 * @see		\Think\Controller::__get()
	 */
	public function __get($name){								//魔术方法放到其它方法前面
		
	}

	/**
	 * 框架的初始化方法,有点和构造方法相似
	 * @author	Baiyu	2016-12-22
	 * @see		\Weibo\Controller\WeibobaseController::_initialize()
	 */
	public function _initialize(){								//框架的父类方法放到魔术方法之后,普通方法之前
		parent::_initialize();		//父类的方法放到最前面
		
		//do something
	}
	
	/**
	 * 列表控制器
	 * @author	Baiyu	2016-12-22
	 * @param	string	$type		列表的类型,可选值有 type1类型一|type2类型二|type3类型三
	 */
	public function index($type = 'type1'){
		$var1 = '';					//重要变量在方法一开始申明
		$var2 = array();
		$var3 = 0;
		
		//TODO 这里还未完成
		
		//@EDIT BY Baiyu 2016-12-22 18:46
		//some code
		//@EDIT END
		
		$out_data = array(
			'key'	=> 'value',
			'key2'	=> 'value2',	//都用逗号结束,key后tab对齐
		);
		
		$assign['data1'] = $var1;	//统一改为这种写法,为了兼容网页和API使用
		$assign['data2'] = $var2;	//assign的值统一放到方法结束的部分
		
		$this -> output($assign);	//统一使用output,并放到最底部
	}
	
	/**
	 * 内部使用的方法用private并用单下划线开始
	 * @author	Baiyu		2016-12-22
	 * @param	number		$param1		参数一
	 * @param	string		$param2		参数二
	 * @return	boolean
	 */
	private function _doSomething($param1, $param2 = ''){
		
		$return = FALSE;
		
		return $return;
	}
}